import axios from 'axios'
// 引入nprogress相关的js和css
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
// import store from '@/store'

const service = axios.create({
  baseURL: '/api',
  timeout: 20000
})

// 请求拦截器，每个ajax请求都要经过这个拦截器去拦截
service.interceptors.request.use(
  // 请求拦截器当中成功的回调
  (config) => {
    NProgress.start() // 开启进度条

    config.headers.Authorization = window.sessionStorage.getItem('token')
    return config
  }
  // 请求拦截器当中失败的回调一般不写，因为失败了，也就没有下文了
  // () => {
  // }
)

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    NProgress.done() // 停止进度条
    return response.data // 返回的响应不再需要从data属性当中拿数据，而是响应就是我们要的数据
  },
  (error) => {
    NProgress.done() // 停止进度条
    // 可以统一处理错误
    alert('发送请求失败' + error.message || '未知错误')
    // 统一处理完成之后，这个错误可以让后面继续处理
    // return Promise.reject(new Error('发送ajax请求失败')) //后面想继续处理这个错误，返回失败的promise
    // 也可以不让后面继续处理这个错误，中断promise链
    return new Promise(() => {}) // 返回的是pending状态的promise，代表中断promise链，后期也就没办法处理了
  }
)

export default service
